package gorpc

import (
	"gitee.com/wm1998/resk/services"
)

// 发红包PRC用户API接口结构体
type EnvelopeRpc struct {
}

/*Go内置的RPC用户接口编写规范：
1. 入参和出参都要作为用户接口方法的入参
2. 方法必须有2个参数，且方法的第2个参数必须是指针类型，且方法要返回error类型
3. 方法必须是可导出的，即：方法名称首字母必须是大写*/

// 发红包用户接口
func (e *EnvelopeRpc) SendOut(in services.RedEnvelopeSendingDTO, out *services.RedEnvelopeActivity) error {
	// 获取对外暴露账户应用层服务接口
	s := services.GetRedEnvelopeService()
	// 调用账户应用层服务接口的发红包方法
	a, err := s.SendOut(in)
	// 将返回的红包活动拷贝到RPC用户接口的输出参数DTO结构体里
	a.CopyTo(out)
	return err
}

// 收/抢红包用户接口
func (e *EnvelopeRpc) Receive(in services.RedEnvelopeReceiveDTO, out *services.RedEnvelopeItemDTO) error {
	s := services.GetRedEnvelopeService()
	a, err := s.Receive(in)
	a.CopeTo(out)
	return err
}

// 可以尝试使用thrift来适配用户接口
